package com.br.egaragens.activitys;


import java.util.Date;

import com.br.egaragens.R;
import com.br.egaragens.Requisicao.Requisicao;
import com.br.egaragens.controles.EmpresasController;
import com.br.egaragens.controles.UsuarioController;
import com.br.egaragens.entidades.Empresa;
import com.br.egaragens.entidades.Usuario;
import com.br.egaragens.util.Util;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources.Theme;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Vibrator;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;

public class Homologacao extends Activity{

	private Button btnOk;
	private EditText edtEmpresa;
	private EditText edtSenha;
	private EmpresasController empresaController;
	private UsuarioController usuarioController;
	private Requisicao requisicao;
	private Empresa  emp;
	private ProgressDialog dialog;
	private Handler handler = new carregaHandle();
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		empresaController = new EmpresasController(getBaseContext());
		setContentView(R.layout.homologacao);
		
		requisicao = new Requisicao(getBaseContext());
		usuarioController = new UsuarioController(getBaseContext());
		
		
		if(empresaController.count() > 0){
			System.out.println("Milessegundos "+System.currentTimeMillis());
			emp = (Empresa) empresaController.getAll().get(0);
			Util.empresa = emp;
			
			if(verificaConexao() && emp.getQtdTentativasAtualizar() >= 10){
				dialog = ProgressDialog.show(Homologacao.this, "Aguarde", "Validando informa��es...",false,false);
				ThreadBuscaChave();
				
			}else{
				emp.setQtdTentativasAtualizar(Util.empresa.getQtdTentativasAtualizar()+1);
				empresaController.atualizar(emp);
				
			
			if(emp.getAtivo().toUpperCase().equals("N")||emp.getQtdTentativasAtualizar()>10){
				if(emp.getAtivo().toUpperCase().equals("N")){
					
					Builder alBuilder = new Builder(Homologacao.this);
					alBuilder.setTitle("Aten��o!");
					alBuilder.setMessage("A licen�a do seu aplicativo esta vencida, favor entrar em contato com o suporte t�cnico," +
							" ou habilite a conex�o e click em ok para tentar buscar a chave automaticamente!");
					alBuilder.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {

						public void onClick(DialogInterface dialoge, int which) {
							dialog = ProgressDialog.show(Homologacao.this, "Aguarde", "Validando informa��es...",false,false);
							ThreadBuscaChave();
						}
					});
					alBuilder.show();
				}else{
					Builder alBuilder = new Builder(Homologacao.this);
					alBuilder.setTitle("Aten��o!");
					alBuilder.setMessage("Foram feitas varias tentativas de conex�o com o servidor que n�o foram bem sucedida," +
							" favor habilite a conex�o e tente novamente para que seja realizado o login!");
					alBuilder.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {

						public void onClick(DialogInterface dialog, int which) {
							finish();
						}
					});
					alBuilder.show();
				}
				
			}else{
				if(usuarioController.count() == 0){
					if(verificaConexao()){
						//requisicao.getUsuario(emp.getEmpresaID());

					if(usuarioController.count() == 0){
						Builder alBuilder = new Builder(Homologacao.this);
						alBuilder.setTitle("Aten��o!");
						alBuilder.setMessage("N�o foi possivel carregar os Usu�rios favor tente abrir o sistema novamente" +
								" � verifique a disponibilidade da internet!");
						alBuilder.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {

							public void onClick(DialogInterface dialog, int which) {
								finish();
							}
						});
						alBuilder.show();
					}
				}else{
					Builder alBuilder = new Builder(Homologacao.this);
					alBuilder.setTitle("Aten��o!");
					alBuilder.setMessage("Verifiquei que n�o h� conex�o ativa em seu aparelho, favor ativar a conex�o" +
							" com a internet e em seguida tentar novamente");
					alBuilder.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {

						public void onClick(DialogInterface dialog, int which) {

						}
					});
					alBuilder.show();
				}
				}else
					irParaTelaLogin();
			}
			}
		}


		btnOk = (Button) findViewById(R.id.homologacao_btn_ok);
		edtEmpresa = (EditText) findViewById(R.id.homologacao_edt_id_empresa);
		edtSenha = (EditText) findViewById(R.id.homologacao_edt_senha);

		btnOk.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {
				vibrate(120);
				if(verificaDigitacao()){
					dialog = ProgressDialog.show(Homologacao.this, "Aguarde", "Validando informa��es...",false,false);
					envioManual();
				}else{
					validaCampos();
				}
			}
		});

	};

	public void ThreadBuscaChave(){
		new Thread(){
			public void run(){
				buscaChave();
			}
		}.start();
	}
	public void buscaChave(){

       /* if(requisicao.getEmpresa(""+emp.getEmpresaID(), emp.getSenha())){
            emp.setQtdTentativasAtualizar(0);
            emp = (Empresa) empresaController.getAll().get(0);
            if(emp.getAtivo().toUpperCase().equals("S"))
                handler.sendEmptyMessage(6);
            else
                handler.sendEmptyMessage(7);
        }else
            handler.sendEmptyMessage(5);*/

    }
	public void envioManual(){
		new Thread(){
			public void run(){
				buscaEmpresa();
			}
		}.start();
	}

	public void buscaEmpresa(){
		
		if(verificaConexao()){
			
			
			/*if(requisicao.getEmpresa(edtEmpresa.getText().toString(), edtSenha.getText().toString())){

				if(empresaController.count() > 0){
					Empresa empresa = (Empresa) empresaController.getAll().get(0);
					Util.empresa = empresa;
					emp = Util.empresa;
					requisicao.getUsuario(""+empresa.getEmpresaID());

					usuarioController = new UsuarioController(getBaseContext());

					if(usuarioController.count() == 0 ){
						
						handler.sendEmptyMessage(0);

					}else{
						
						handler.sendEmptyMessage(1);
					}

				}else{
					handler.sendEmptyMessage(2);
					
				}
			}else{
				handler.sendEmptyMessage(3);
			}
		}else{
			handler.sendEmptyMessage(4);
*/
		}
	}
	public void validaCampos(){
		Builder alBuilder = new Builder(Homologacao.this);
		alBuilder.setTitle("Aten��o!");
		alBuilder.setMessage("A campos vazio ou voc� digitou valores incorretos!");
		alBuilder.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {

			public void onClick(DialogInterface dialog, int which) {

			}
		});
		alBuilder.show();
	}
	public boolean verificaDigitacao(){
		if(edtEmpresa.getText().toString().equals("")){
			return false;
		}else if(edtSenha.getText().toString().equals("")||edtSenha.getText().toString().contains("'")){
			return false;
		}
		return true;
	}
	public void irParaTelaLogin(){
		
		//requisicao.getConvenio(""+emp.getEmpresaID());
		
		if(emp.getAtivo().toUpperCase().equals("S")){
			
			if(usuarioController.count() == 1){
				finish();
				Intent i = new Intent(this, ActivityMain.class);
				i.putExtra("usuario",(Usuario) usuarioController.getAll().get(0));
				startActivity(i);
			}else{
				finish();
				Intent i = new Intent(this, LoginUser.class);
				startActivity(i);
			}
		}else{
			finish();
		}
		
	}
	public  boolean verificaConexao() {  
		boolean conectado;  
		ConnectivityManager conectivtyManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);  
		if (conectivtyManager.getActiveNetworkInfo() != null  
				&& conectivtyManager.getActiveNetworkInfo().isAvailable()  
				&& conectivtyManager.getActiveNetworkInfo().isConnected()) {  
			conectado = true;  
		} else {  
			conectado = false;  
		}  
		return conectado;  
	}
	
	private class carregaHandle extends Handler{
		public void handleMessage(Message message){
			switch (message.what) {
			case 0:
				dialog.dismiss();
				Builder alBuilder = new Builder(Homologacao.this);
				alBuilder.setTitle("Aten��o!");
				alBuilder.setMessage("N�o foi possivel carregar os Usu�rios favor tente abrir o sistema novamente" +
						" � verifique a disponibilidade da internet!");
				alBuilder.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {

					public void onClick(DialogInterface dialog, int which) {
						
						finish();
					}
				});
				alBuilder.show();
				break;
			case 1:
				dialog.dismiss();
				Builder alBuilder2 = new Builder(Homologacao.this);
				alBuilder2.setTitle("Aten��o!");
				alBuilder2.setMessage("Aplicativo registrado com sucesso!");
				alBuilder2.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {

					public void onClick(DialogInterface dialog, int which) {
						
						irParaTelaLogin();
					}
				});
				alBuilder2.show();
				break;
			case 2:
				dialog.dismiss();
				Builder alBuilder3 = new Builder(Homologacao.this);
				alBuilder3.setTitle("Aten��o!");
				alBuilder3.setMessage("Erro ao registrar o Aplicativo, favor verifique os dados informados!");
				alBuilder3.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {

					public void onClick(DialogInterface dialog, int which) {

					}
				});
				alBuilder3.show();
				break;
			case 3:
				dialog.dismiss();
				Builder alBuilder4 = new Builder(Homologacao.this);
				alBuilder4.setTitle("Aten��o!");
				alBuilder4.setMessage("Erro ao registrar o Aplicativo, favor verifique os dados informados!");
				alBuilder4.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {

					public void onClick(DialogInterface dialog, int which) {
						
					}
				});
				alBuilder4.show();
				break;
			case 4:
				dialog.dismiss();
				Builder alBuilder5 = new Builder(Homologacao.this);
				alBuilder5.setTitle("Aten��o!");
				alBuilder5.setMessage("Verifiquei que n�o h� conex�o ativa em seu aparelho, favor ativar a conex�o" +
						" com a internet e em seguida tentar novamente");
				alBuilder5.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {

					public void onClick(DialogInterface dialog, int which) {

					}
				});
				alBuilder5.show();
				break;
			case 5:
				dialog.dismiss();
				Builder alBuilder6 = new Builder(Homologacao.this);
				alBuilder6.setTitle("Aten��o!");
				alBuilder6.setMessage("Erro ao tentar validar chave!");
				alBuilder6.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {
					
					public void onClick(DialogInterface dialog, int which) {
						finish();
					}
				});
				alBuilder6.show();
				break;
			case 6:
				dialog.dismiss();
				Builder alBuilder7 = new Builder(Homologacao.this);
				alBuilder7.setTitle("Aten��o!");
				alBuilder7.setMessage("Busca de chave realizado com sucesso!");
				alBuilder7.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {
					
					public void onClick(DialogInterface dialog, int which) {
						irParaTelaLogin();
					}
				});
				alBuilder7.show();
				break;
			case 7:
				dialog.dismiss();
				Builder alBuilder8 = new Builder(Homologacao.this);
				alBuilder8.setTitle("Aten��o!");
				alBuilder8.setMessage("A chave n�o foi validada favor entrar em contato com o suporte t�cnico!");
				alBuilder8.setPositiveButton(" OK ", new DialogInterface.OnClickListener() {
					
					public void onClick(DialogInterface dialog, int which) {
						finish();
					}
				});
				alBuilder8.show();
				break;
			
			}
		}
	}
	 private void vibrate(long tempo) {
			Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
			vibrator.vibrate(tempo);
		}
	
}
